package kotlin05.src.main.java.com.example.kotlin05.s01

/**
 * 扩展函数
 *   扩展可以在 不直接修改类定义的情况下增加类功能，扩展可以用于自定义类，也可以
 *   用于比如 list\string、，以及kotlin扩展库里的其他类。和继承相似，扩展也能共享类行为
 *   在你无法接触某个类定义，或者某个类没有使用open修饰符，导致你无法继承它时
 *   扩展就是增加类功能的最好选择
 *
 *   TODO:一旦给类扩展了方法，在整个工程下都可以调用，都有效
 *   TODO:如果是private  只在当前文件里有效
 */
fun main() {

    val addExt = "ahahha".addExt(2)
    println(addExt)

    "abc".easyPrint()
    28.easyPrint()
}

//扩展string的方法
//给字符串追加若干个 ！！
fun String.addExt(amount:Int = 1) =  this + "!".repeat(amount)

//扩展超类方法
fun Any.easyPrint() = println(this)
